//package cn.stylefeng.guns.schedule;
//
//import cn.hutool.core.collection.CollUtil;
//import cn.hutool.core.date.DateUtil;
//import cn.hutool.core.thread.ThreadUtil;
//import cn.hutool.core.util.StrUtil;
//import cn.hutool.http.HttpUtil;
//import com.alibaba.fastjson.JSONArray;
//import com.alibaba.fastjson.JSONObject;
//import com.google.common.collect.Maps;
//import lombok.Builder;
//import lombok.Data;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.CommandLineRunner;
//import org.springframework.stereotype.Component;
//
//import java.util.*;
//import java.util.concurrent.TimeUnit;
//
///**
// * @program: football_manage
// * @description:
// * @author: xiesm
// * @create: 2022-04-19 09:06
// **/
//@Slf4j
//@Component
//public class Ao84Schedule implements CommandLineRunner {
//    @Autowired
//    private Ao82Schedule ao82Schedule;
//    private static final Map<String, String> lianxu = Maps.newHashMap();
//
//    private static final Map<String, Integer> weizhiNum1 = Maps.newHashMap();
//    private static final Map<String, Integer> weizhiNum2 = Maps.newHashMap();
//    private static final Map<String, Integer> weizhiNum3 = Maps.newHashMap();
//    private static final Map<String, Integer> weizhiNum4 = Maps.newHashMap();
//    private static final Map<String, Integer> weizhiNum5 = Maps.newHashMap();
//    private static final Map<String, Integer> weizhiNum6 = Maps.newHashMap();
//    private static final Map<String, Integer> weizhiNum7 = Maps.newHashMap();
//    private static final Map<String, Integer> weizhiNum8 = Maps.newHashMap();
//
//
//    @Override
//    public void run(String... args) throws Exception {
//        new Thread(() -> {
//            init();
//            List<String> nums = Arrays.asList("4", "9");
//            while (true) {
//                String mm = DateUtil.format(new Date(), "mm").substring(1);
//                if (nums.contains(mm)) {
//                    Integer ss = Integer.valueOf(DateUtil.format(new Date(), "ss"));
//                    once();
//                    getCodeMap();
//                    warnCodeMap();
//                    ThreadUtil.sleep(60 - ss, TimeUnit.SECONDS);
//                } else {
//                    ThreadUtil.sleep(60000);
//                }
//            }
//        }).start();
//    }
//
//
//    private static Map<String, Integer> codeMap = new TreeMap<>();
//
//    public static void initCodeMap() {
//        for (int i = 1; i < 21; i++) {
//            codeMap.put(StrUtil.padPre(i + "", 2, "0") + "", 0);
//        }
//    }
//
//    public void warnCodeMap() {
//        String date = DateUtil.format(new Date(), "HH:mm");
//        Iterator<String> iterator = codeMap.keySet().iterator();
//        while (iterator.hasNext()) {
//            String key = iterator.next();
//            if (codeMap.get(key) >= 6) {
//                String msg = StrUtil.format("{}，连续6次，号码：{}", date, key);
//                ao82Schedule.send(1000009, msg);
//            }
//        }
//    }
//
//    public void getCodeMap() {
//        initCodeMap();
//        Ao81Schedule schedule = new Ao81Schedule();
//        JSONObject jsonObject = schedule.readRace("2023-07-25");
//        jsonObject.getJSONArray("data");
////        HashBasedTable<String, String, StringBuffer> table = getCodes("2023-07-25", 1);
////        System.out.println("111");
//        JSONArray datas = jsonObject.getJSONObject("result").getJSONArray("data");
//        for (int i = datas.size() - 1; i >= 0; i--) {
//            List<String> codes = Arrays.asList(datas.getJSONObject(i).getString("preDrawCode").split(","));
//            Iterator<String> iterator = codeMap.keySet().iterator();
//            while (iterator.hasNext()) {
//                String key = iterator.next();
//                if (codes.contains(key)) {
//                    codeMap.put(key, codeMap.get(key) + 1);
//                } else {
//                    codeMap.put(key, 0);
//                }
//            }
//        }
//    }
//
//    public void setWeizhiNum(Map<String, Integer> weizhiNum, String code, boolean isSend,
//                             String issue, String weizhi) {
//        Integer count = 1;
//        if (CollUtil.isNotEmpty(weizhiNum)) {
//            String code2 = weizhiNum.keySet().stream().findFirst().get();
//            if (Objects.equals(code2, code)) {
//                count = weizhiNum.get(code) + 1;
//                weizhiNum.put(code, count);
//            } else {
//                weizhiNum.clear();
//                weizhiNum.put(code, count);
//            }
//        } else {
//            weizhiNum.put(code, count);
//        }
//        if (isSend) {
//            if (count == 3) {
//                String msg = StrUtil.format("{},位置:{},重号{}次", issue, weizhi, count);
//                ao82Schedule.send(1000007, msg);
//                lianxu.put(weizhi, "1");
//            }
//            if (CollUtil.isNotEmpty(lianxu) && lianxu.get(weizhi) != null && count == 2) {
//                String msg = StrUtil.format("{},位置:{},重号{}次", issue, weizhi, count);
//                ao82Schedule.send(1000005, msg);
//                lianxu.remove(weizhi);
//            }
//        }
//    }
//
//    public static void main(String[] args) {
//        Ao84Schedule schedule = new Ao84Schedule();
//        JSONObject jsonObject = schedule.get();
//        Map<String, Ball> jiexi = schedule.jiexi(jsonObject);
//        Iterator<Map.Entry<String, Ball>> iterator = jiexi.entrySet().iterator();
//        while (iterator.hasNext()) {
//            Map.Entry<String, Ball> next = iterator.next();
//            Ball ball = next.getValue();
//            schedule.setWeizhiNum(weizhiNum1, ball.getNum1(), false, next.getKey(), "1");
//            schedule.setWeizhiNum(weizhiNum2, ball.getNum2(), false, next.getKey(), "2");
//            schedule.setWeizhiNum(weizhiNum3, ball.getNum3(), false, next.getKey(), "3");
//            schedule.setWeizhiNum(weizhiNum4, ball.getNum4(), false, next.getKey(), "4");
//            schedule.setWeizhiNum(weizhiNum5, ball.getNum5(), false, next.getKey(), "5");
//            schedule.setWeizhiNum(weizhiNum6, ball.getNum6(), false, next.getKey(), "6");
//            schedule.setWeizhiNum(weizhiNum7, ball.getNum7(), false, next.getKey(), "7");
//            schedule.setWeizhiNum(weizhiNum8, ball.getNum8(), false, next.getKey(), "8");
//        }
//        System.out.println(weizhiNum1);
//
//    }
//
//    public void init() {
//        JSONObject jsonObject = get();
//        Map<String, Ball> jiexi = jiexi(jsonObject);
//        Iterator<Map.Entry<String, Ball>> iterator = jiexi.entrySet().iterator();
//        while (iterator.hasNext()) {
//            Map.Entry<String, Ball> next = iterator.next();
//            Ball ball = next.getValue();
//            setWeizhiNum(weizhiNum1, ball.getNum1(), false, next.getKey(), "1");
//            setWeizhiNum(weizhiNum2, ball.getNum2(), false, next.getKey(), "2");
//            setWeizhiNum(weizhiNum3, ball.getNum3(), false, next.getKey(), "3");
//            setWeizhiNum(weizhiNum4, ball.getNum4(), false, next.getKey(), "4");
//            setWeizhiNum(weizhiNum5, ball.getNum5(), false, next.getKey(), "5");
//            setWeizhiNum(weizhiNum6, ball.getNum6(), false, next.getKey(), "6");
//            setWeizhiNum(weizhiNum7, ball.getNum7(), false, next.getKey(), "7");
//            setWeizhiNum(weizhiNum8, ball.getNum8(), false, next.getKey(), "8");
//        }
//    }
//
//    public void once() {
//        try {
//            JSONObject jsonObject = get();
//            Map<String, Ball> map = jiexi(jsonObject);
//            JSONArray datas = jsonObject.getJSONObject("result").getJSONArray("data");
//            String issue = datas.getJSONObject(0).getString("preDrawIssue");
//            Ball ball = map.get(issue);
//            setWeizhiNum(weizhiNum1, ball.getNum1(), true, issue, "1");
//            setWeizhiNum(weizhiNum2, ball.getNum2(), true, issue, "2");
//            setWeizhiNum(weizhiNum3, ball.getNum3(), true, issue, "3");
//            setWeizhiNum(weizhiNum4, ball.getNum4(), true, issue, "4");
//            setWeizhiNum(weizhiNum5, ball.getNum5(), true, issue, "5");
//            setWeizhiNum(weizhiNum6, ball.getNum6(), true, issue, "6");
//            setWeizhiNum(weizhiNum7, ball.getNum7(), true, issue, "7");
//            setWeizhiNum(weizhiNum8, ball.getNum8(), true, issue, "8");
//        } catch (Exception e) {
//            log.error(e.getMessage(), e);
//        }
//    }
//
//    private static final String url = "https://api.apiose122.com/klsf/getHistoryLotteryInfo.do?date={}&lotCode=10011";
//
//    public JSONObject get() {
//        String date = DateUtil.format(new Date(), "yyyy-MM-dd");
//        String host = StrUtil.format(url, date);
//        String body = HttpUtil.createGet(host).execute().body();
//        return JSONObject.parseObject(body);
//    }
//
//    @Data
//    @Builder
//    static class Ball {
//        private String num1;
//        private String num2;
//        private String num3;
//        private String num4;
//        private String num5;
//        private String num6;
//        private String num7;
//        private String num8;
//
//        public static Ball setNums(String[] codes) {
//            return Ball.builder()
//                    .num1(codes[0])
//                    .num2(codes[1])
//                    .num3(codes[2])
//                    .num4(codes[3])
//                    .num5(codes[4])
//                    .num6(codes[5])
//                    .num7(codes[6])
//                    .num8(codes[7])
//                    .build();
//        }
//    }
//
//    public Map<String, Ball> jiexi(JSONObject jsonObject) {
//        JSONArray datas = jsonObject.getJSONObject("result").getJSONArray("data");
//        Map<String, Ball> map = Maps.newLinkedHashMap();
//        for (int i = datas.size() - 1; i >= 0; i--) {
//            JSONObject data = datas.getJSONObject(i);
//            String code = data.getString("preDrawCode");
//            String[] codes = code.split(StrUtil.COMMA);
//            map.put(data.getString("preDrawIssue"), Ball.setNums(codes));
//        }
//        return map;
//    }
//}
